#ifndef ICPEFORCEUI_H
#define ICPEFORCEUI_H

#include "../CpePluginManager/cpedefine.h"
/* 系统库 */
#include <vector>
#include <QString>

class ICpeForceUI
{
public:
    virtual ~ICpeForceUI() = default;

    /**
     * @brief clearRatList 清除网络类型列表
     */
    virtual void clearRatList() = 0;

    /**
     * @brief clearAllBandList 清除所有频段列表
     */
    virtual void clearAllBandList() = 0;

    /**
     * @brief uncheckAllBandList 清除所有频段复选框的勾
     */
    virtual void uncheckAllBandList() = 0;

    /**
     * @brief insertRat         插入一个新的网络类型
     * @param strRat            网络类型内码
     * @param strDescription    网络类型描述文字
     */
    virtual void insertRat(const QString &strRat, const QString &strDescription) = 0;

    /**
     * @brief checkRat  勾选某个网络类型
     * @param strRat    网络类型描述文字
     */
    virtual void checkRat(const QString &strRat) = 0;

    /**
     * @brief getRat    获取当前勾选的网络类型内码
     * @return          当前的网络类型内码
     */
    virtual QString getRat() = 0;

    /**
     * @brief insertBand    插入频段列表
     * @param eType         频段类型
     * @param vecBand       频段列表
     */
    virtual void insertBand(CpeEmBandType eType, const std::vector<int> &vecBand) = 0;

    /**
     * @brief checkBand 勾选指定的频段列表
     * @param eType     频段类型
     * @param vecBand   频段列表
     */
    virtual void checkBand(CpeEmBandType eType, const std::vector<int> &vecBand) = 0;

    /**
     * @brief getBand   获取当前勾选的频段列表
     * @param eType     频段类型
     * @param vecBand   当前勾选的频段列表
     */
    virtual void getBand(CpeEmBandType eType, std::vector<int> &vecBand) = 0;

    /**
     * @brief showNROption  显示组网方式选项，目前只有华为部分型号用到了这个
     */
    virtual void showNROption() = 0;

    /**
     * @brief checkNROption 勾选指定的组网方式
     * @param eType         组网方式
     */
    virtual void checkNROption(CpeEmNRType eType) = 0;

    /**
     * @brief getNROption   获取当期组网方式
     * @return              组网方式
     */
    virtual CpeEmNRType getNROption() = 0;

    /**
     * @brief getLTELockCell    获取当前LTE锁小区配置
     * @param strARFCN          频点
     * @param strPCI            PCI
     */
    virtual void getLTELockCell(QString &strARFCN, QString &strPCI) = 0;

    /**
     * @brief setLTELockCell    设置LTE锁小区的配置
     * @param strARFCN          频点
     * @param strPCI            PCI
     */
    virtual void setLTELockCell(const QString &strARFCN, const  QString &strPCI) = 0;

    /**
     * @brief getNRLockCell 获取当前NR锁小区配置
     * @param strARFCN      频点
     * @param strPCI        PCI
     * @param strBand       频段
     * @param strSCS        子载波间隔
     */
    virtual void getNRLockCell(QString &strARFCN, QString &strPCI, QString &strBand, QString &strSCS) = 0;

    /**
     * @brief setNRLockCell 设置当前NR锁小区配置
     * @param strARFCN      频点
     * @param strPCI        PCI
     * @param strBand       频段
     * @param strSCS        子载波间隔
     */
    virtual void setNRLockCell(const QString &strARFCN, const QString &strPCI, const QString &strBand, const QString &strSCS) = 0;

    /**
     * @brief hideCGW 隐藏2G和3G锁频段
     */
    virtual void hideCGW() = 0;

    /**
     * @brief hideNR 隐藏NR锁频段
     */
    virtual void hideNR() = 0;

    /**
     * @brief hideLockCell 隐藏锁小区
     */
    virtual void hideLockCell() = 0;

    /**
     * @brief hideNROption 隐藏组网方式设置
     */
    virtual void hideNROption() = 0;

    /**
     * @brief hideLockRatBtn 隐藏锁网按钮
     */
    virtual void hideLockRatBtn() = 0;

    /**
     * @brief hideLTELockCell 隐藏LTE锁小区
     */
    virtual void hideLTELockCell() = 0;

    /**
     * @brief showBandLockNRBtn 显示5G锁频段按钮
     */
    virtual void showBandLockNRBtn() = 0;

    /**
     * @brief hideBandScs 隐藏5G锁小区的频段和SCS
     */
    virtual void hideBandScs() = 0;

    /**
     * @brief showLockCellList 显示锁多个小区功能
     */
    virtual void showLockCellList() = 0;

    /**
     * @brief clearCellList 清除小区列表
     */
    virtual void clearCellList() = 0;

    /**
     * @brief setCellList   设置小区列表
     * @param str           字符串
     */
    virtual void setCellList(const QString &str) = 0;

    /**
     * @brief getCellList 获取小区列表
     * @return
     */
    virtual QString getCellList() = 0;

    virtual void hideScs() = 0;
};

QT_BEGIN_NAMESPACE
Q_DECLARE_INTERFACE(ICpeForceUI, "com.kk.cpemanager.icpeforceui")
QT_END_NAMESPACE

#endif // ICPELOGINUI_H
